/*
	Copyright (C) 2013 Pontificia Universidad Catolica del Peru
	contact: http://avatar.inf.pucp.edu.pe/realidad-aumentada/
	address contact: Av. Universitaria 1801, San Miguel, Lima-Peru.
	
	This file is part of UbicAR PUCP.

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with This program.  If not, see <http://www.gnu.org/licenses/>.
*/
/*
	Authors: Alvaro Roger Agüero Sánchez, Rodolfo Javier Galvez Meza
	Pontificia Universidad Catolica del Peru
	Departamento de Ingeniería
*/

package org.grupoavatar.guiaubicua.mix.data;

import java.util.ArrayList;

public class Pregunta {
	
	public static final int UNICA_RESPUESTA = 0;
	public static final int MULTIPLES_RESPUESTAS = 1;
	
	private int id;
	private String detalle;
	private ArrayList<OpcionPregunta> opciones;
	private boolean respondido;
	private ArrayList<OpcionPregunta> respuestas;
	private int tipoPregunta;
	
	public Pregunta(int id, String detalle, ArrayList<OpcionPregunta> opciones, int tipoPregunta) {
		this.id = id;
		this.detalle = detalle;
		this.opciones = opciones;
		this.tipoPregunta = tipoPregunta;
		
		if (tipoPregunta == UNICA_RESPUESTA)
			this.respondido = false;
		else if (tipoPregunta == MULTIPLES_RESPUESTAS)
			this.respondido = true;
		
		this.respuestas = new ArrayList<OpcionPregunta>();
	}
	
	public int getId() {
		return id;
	}
	
	public String getDetalle() {
		return detalle;
	}
	
	public ArrayList<OpcionPregunta> getOpciones() {
		return opciones;
	}
	
	public int getTipoPregunta() {
		return tipoPregunta;
	}
	
	public boolean isRespondido() {
		return respondido;
	}
	
	public void setRespondido(OpcionPregunta opcionElegida) {
		respondido = true;
		if (tipoPregunta == UNICA_RESPUESTA) {
			respuestas.clear();
			respuestas.add(opcionElegida);
		} else if (tipoPregunta == MULTIPLES_RESPUESTAS) {
			if (!respuestas.contains(opcionElegida)) {
				respuestas.add(opcionElegida);
			}
		}
	}
	
	public void retirarRespuesta(OpcionPregunta opcion) {
		if (respuestas.contains(opcion))
			respuestas.remove(opcion);
	}
	
	public ArrayList<OpcionPregunta> getRespuestas() {
		return respuestas;
	}
}
